package com.yj.springbootevent.demo;

import org.springframework.context.ApplicationEvent;

/**
 *
 * Spring 中的事件发布与监听
 * 一、核心对象
 *      1.事件    ApplicationEvent
 *      2.事件发布器     ApplicationEventPublisher,ApplicationEventPublisherAware
 *      3.事件监听器     注解监听@EventListener, 接口监听ApplicationListener<T>：泛型为监听的事件类型
 *
 * spring 中使用ApplicationEvent抽象类来表示一个事件，我们自定义事件则需要实现该接口
 *  1、继承ApplicationEvent，实现其有参的构造方法
 *      构造器source 参数表示当前事件的事件源，一般传入Spring的context上下文对象即可。
 */
public class MyEvent<T> extends ApplicationEvent {

    //传递数据
    T data;

    //一般传入Spring的context上下文对象
    public MyEvent(Object source) {
        super(source);
    }

    public MyEvent(Object source,T data) {
        super(source);
        this.data = data;
    }
}
